package aml.parse.node;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import aml.parse.ParseNode;
import aml.runtime.Context;
import aml.runtime.Value;

public class Array extends ParseNode {
	
	public Array(List<ParseNode> nodes) {
		List<ParseNode> exprNodes = new ArrayList<ParseNode>();
		Iterator<ParseNode> it = nodes.iterator();
		while (it.hasNext()) {
			ParseNode n = it.next();
			if (n instanceof OpComma) {
				if (exprNodes.size() > 0) {
					addChild(new Expr(exprNodes));
				}
				exprNodes.clear();
			}
			else {
				exprNodes.add(n);
			}
		}
		if (exprNodes.size() > 0) {
			addChild(new Expr(exprNodes));
		}
	}

	@Override
	public Value eval(Context ctx) {
		return new aml.runtime.Array(ctx, children);
	}

	@Override
	public String toString() {
		return "[NOT IMPLEMENTED]";
	}
	
}